package algorithm.arithmetic.鸡生蛋蛋孵鸡;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author GYFeng by 2016/11/28
 * @version 1.0
 */
public class Solution {
//    刚生下来的鸡蛋，需要孵化10天才能变成小鸡，小鸡需要30天以后才开始下蛋，
//    刚开始下蛋的30天是三天下一个蛋，接下来的30天是两天下一个蛋，
//    再接下来的30天是每天下一个蛋，然后停止下蛋，停止下蛋的鸡会被卖掉。
//    小明回家养鸡，买了一个刚下的蛋，过了n天后，问小明有多少个蛋，多少只鸡，卖了多少只鸡。
//    如：输入：207 输出：5324 8114 15
    private static int getAge(int birthday, int day) {
        return day - birthday;
    }

    public static void main(String[] args) {
        List<Integer> dd = new ArrayList<Integer>();
        List<Integer> jj = new ArrayList<Integer>();
        List<Integer> mm = new ArrayList<Integer>();
        dd.add(0);
        for (int i = 0; i < Integer.parseInt(args[0]); i++) {
            Iterator<Integer> ddIterator = dd.iterator();
            while (ddIterator.hasNext()) {
                Integer d = ddIterator.next();
                if (getAge(d, i) >= 10) {
                    ddIterator.remove();
                    jj.add(d);
                }
            }
            Iterator<Integer> jjIterator = jj.iterator();
            while (jjIterator.hasNext()) {
                Integer birthday = jjIterator.next();
                int j = getAge(birthday, i);
                if (j >= 40 && j < 70) {
                    if ((j - 40) % 3 == 0) {
                        dd.add(i);
                    }
                }
                if (j >= 70 && j < 100) {
                    if ((j - 70) % 2 == 0) {
                        dd.add(i);
                    }
                }
                if (j >= 100 && j < 130) {
                    dd.add(i);
                }
                if (j >= 130) {
                    jjIterator.remove();
                    mm.add(birthday);
                }
            }
        }
        System.out.println(dd.size() + " " + jj.size() + " " + mm.size());
    }
}
